home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Demos / IntelliBots 1.0.1 / IntelliBots / IBots / includes / IBSYSTEM.INC
Encoding:
Text File  |  1995-11-15  |  10.0 KB  |  228 lines  |  [TEXT/IBot]

  1. ;    Title:            IntelliBots System Includes
  2. ;    Created By:        ITI
  3. ;    Description:    predefined names and values
  4. ;    Version:        1.0
  5. ;    Last change:    3 August 95
  6. ;
  7. ;    WARNING!!        These are provided to help you with your programming.
  8. ;                    These values are permanently set within the IntelliBots program.
  9. ;                    Change these values at your own risk! Undefined behaviour may result.
  10.  
  11. ; read/write port constants
  12. ERROR                    EQU    0                        ; current error status
  13. RELATIVEX                EQU    1                        ; movement from initial position
  14. RELATIVEY                EQU    2                        ; movement from initial position
  15. INTPROCTIMER            EQU    3                        ; timer interrupt handler
  16. INTPROCKEY                EQU    4                        ; keyboard interrupt handler
  17. INTPROCSCAN                EQU    5                        ; scanned interrupt handler
  18. INTPROCCOMM                EQU    6                        ; communitcation received interrupt handler
  19. INTPROCDAMAGE            EQU    7                        ; damaged interrupt handler
  20. INTPROCATTACK            EQU    8                        ; attacked interrupt handler
  21. INTPROCERROR            EQU    9                        ; error interrupt handler
  22. INTMASK                    EQU    10                        ; interrupt mask (handled interrupts)
  23. INTPENDING                EQU    11                        ; interrupts waiting execution
  24. INTEXECUTING            EQU    12                        ; interrupts currently executing
  25. MESSAGE                    EQU    13                        ; message address for communication
  26. SCANOBJECT                EQU    14                        ; scan code from last scan
  27. SCANDISTANCE            EQU    15                        ; scan distance from last scan
  28. SCANX                    EQU    16                        ; relative distance to scanned object
  29. SCANY                    EQU    17                        ; relative distance to scanned object
  30. SIDEATTACKED            EQU    18                        ; which side was attacked
  31. SIDESCANNED                EQU    19                        ; which side was scanned
  32. DAMAGINGOBJ                EQU    20                        ; scan code of last object which caused damage
  33. LASTKEY                    EQU    21                        ; last keystroke value in ASCII code
  34.  
  35. READONLYPORTMASK        EQU    $00008000                ; mask to tell difference between r/w and r/o ports
  36.  
  37. ; read only port constants
  38. ARMORFRONT                EQU    0 | READONLYPORTMASK    ; front armor capacity remaining
  39. ARMORRIGHT                EQU    1 | READONLYPORTMASK    ; right armor capacity remaining
  40. ARMORBACK                EQU    2 | READONLYPORTMASK    ; back armor capacity remaining
  41. ARMORLEFT                EQU    3 | READONLYPORTMASK    ; left armor capacity remaining
  42. SHIELDFRONT                EQU    4 | READONLYPORTMASK    ; front shield capacity remaining
  43. SHIELDRIGHT                EQU    5 | READONLYPORTMASK    ; right shield capacity remaining
  44. SHIELDBACK                EQU    6 | READONLYPORTMASK    ; back shield capacity remaining
  45. SHIELDLEFT                EQU    7 | READONLYPORTMASK    ; left shield capacity remaining
  46. SHELLS                    EQU    8 | READONLYPORTMASK    ; number of cannon projectiles remaining
  47. CHASSISDIR                EQU    9 | READONLYPORTMASK    ; current direction chassis is facing (absolute)
  48. TURRETDIR                EQU    10 | READONLYPORTMASK    ; current direction turret is facing (absolute)
  49. LASERTEMP                EQU    11 | READONLYPORTMASK    ; current laser temperature
  50. CANNONTEMP                EQU    12 | READONLYPORTMASK    ; current cannon temperature
  51. TICKS                    EQU    13 | READONLYPORTMASK    ; counts down
  52. TIMER                    EQU    14 | READONLYPORTMASK    ; counts up
  53. POWER                    EQU    15 | READONLYPORTMASK    ; power reserves remaining
  54.  
  55.  
  56.  
  57. ; CoProcessor constants (COPR instruction)
  58. ; chassis commands
  59. CHASSISTURN                EQU    $0000                    ; turn chassis relative
  60. CHASSISTURNTO            EQU    CHASSISTURN + 1            ; turn chassis absolute
  61. CHASSISSCAN                EQU    CHASSISTURNTO + 1        ; short range (chassis) scan
  62. CHASSISMOVE                EQU    CHASSISSCAN + 1            ; move
  63.  
  64. ; turret commands
  65. TURRETTURN                EQU    $0100                    ; turn turret relative
  66. TURRETTURNTO            EQU    TURRETTURN + 1            ; turn turret absolute
  67. TURRETSCAN                EQU    TURRETTURNTO + 1        ; long range (turret) scan
  68.  
  69. ; offensive commands
  70. OFFENSELASER            EQU    $0200                    ; fire laser
  71. OFFENSECANNON            EQU    OFFENSELASER + 1        ; launch a projectile
  72. OFFENSEDESTRUCT            EQU    OFFENSECANNON + 1        ; self-destruct
  73.  
  74. ; defensive commands
  75. DEFENSESHIELDFRONT        EQU    $0300                    ; raise front shield
  76. DEFENSESHIELDRIGHT        EQU    DEFENSESHIELDFRONT + 1    ; raise right shield
  77. DEFENSESHIELDBACK        EQU    DEFENSESHIELDRIGHT + 1    ; raise back shield
  78. DEFENSESHIELDLEFT        EQU    DEFENSESHIELDBACK + 1    ; raise left shield
  79. DEFENSECLOAK            EQU    DEFENSESHIELDLEFT + 1    ; cloak mode ON/OFF
  80.  
  81. ;System commands (SYS instruction)
  82. ; general commands
  83. COPRSTOP                EQU    $0000                    ; stop a coprocessor
  84. COPRWAIT                EQU    COPRSTOP + 1            ; wait on a coprocessor
  85. COPRMODE                EQU    COPRWAIT + 1            ; async mode ON/OFF
  86. STATUSTEXT                EQU    COPRMODE + 1            ; display a message
  87. OBJECTSTATE                EQU    STATUSTEXT + 1            ; Identify friend / foe / Alive / Dead
  88. MESSAGESEND                EQU    OBJECTSTATE + 1            ; send a message
  89. COPRCURCMD                EQU    MESSAGESEND + 1            ; currently executing coprocessor command
  90.  
  91. RANDOM                    EQU    $0100                    ; random number
  92. MISSIONINFO                EQU    $0200                    ; mission information system call
  93. MISLOCALESIZE            EQU    $0000                    ; mission info map size request
  94. MISOBJECTIVE            EQU    MISLOCALESIZE + 1        ; mission info objective request
  95.  
  96. ;boolean equates
  97. FALSE                    EQU 0
  98. TRUE                    EQU    1
  99.  
  100. ;cloak mode
  101. OFF                        EQU    0
  102. ON                        EQU    1
  103.  
  104. ;async mode
  105. SYNC                    EQU    OFF                        ; wait for co-processor command completion 
  106. ASYNC                    EQU    ON                        ; continue while co-processor executes
  107.  
  108. ; identification results
  109. ALIVE                    EQU    -1                        ; robot is alive
  110. DEAD                    EQU    1                        ; robot is dead
  111. NEUTRAL                    EQU    0                        ; robot is not functioning
  112.  
  113. ; **** MISC
  114. ; scan masks
  115. SCANMASKLIGHTDAMAGE        EQU    $01                        ; $0001/1    will isolate the light damage bit
  116. SCANMASKMEDIUMDAMAGE    EQU    $02                        ; $0002/2    will isolate the medium damage bit
  117. SCANMASKHEAVYDAMAGE        EQU    SCANMASKLIGHTDAMAGE | SCANMASKMEDIUMDAMAGE    ; $0003/3    will isolate the heavy damage bits
  118. SCANMASKLTPOWERDAMAGE    EQU    $04                        ; $0004/4    will isolate the light power damage bit
  119. SCANMASKMEDPOWERDAMAGE    EQU    $08                        ; $0008/8    will isolate the medium power damage bit
  120. SCANMASKHVYPOWERDAMAGE    EQU    SCANMASKLTPOWERDAMAGE | SCANMASKMEDPOWERDAMAGE    ; $000C/12    will isolate the heavy power damage bits
  121. SCANMASKDAMAGE            EQU    SCANMASKHEAVYDAMAGE | SCANMASKHVYPOWERDAMAGE    ; $000F/15    will isolate all damage bits
  122. SCANMASKLOWSCAN            EQU    $10                        ; $0010/16    will isolate the low scan bit
  123. SCANMASKHIGHSCAN        EQU    $20                        ; $0020/32    will isolate the high scan bit
  124. SCANMASKSCAN            EQU    SCANMASKLOWSCAN | SCANMASKHIGHSCAN    ; $0030/48    will isolate the scan bits
  125. SCANMASKATTR            EQU    $00FF                    ; $00FF/127    will isolate the attributes
  126. SCANMASKOBJECT            EQU    $8000                    ; $8000/32768    will isolate the object bit
  127. SCANMASKID                EQU    $FF00                    ; $FF00/65280    will isolate the id
  128.  
  129. ; scan code constants
  130. EMPTY                    EQU    $0000                    ; does not block scan
  131. LOWCOVER                EQU    $0200 | SCANMASKLOWSCAN    ; no damage hard to see
  132. HIGHCOVER                EQU    $0300 | SCANMASKSCAN    ; no damage hard to see
  133. LIGHTNATURAL            EQU    $0400 | SCANMASKLIGHTDAMAGE | SCANMASKLOWSCAN    ; light vegetation
  134. MEDIUMNATURAL            EQU    $0600 | SCANMASKMEDIUMDAMAGE | SCANMASKSCAN    ; medium vegetation
  135. HEAVYNATURAL            EQU    $0800 | SCANMASKHEAVYDAMAGE | SCANMASKSCAN    ; heavy vegetation
  136. POWERNATURAL            EQU    $0A00 | SCANMASKLTPOWERDAMAGE | SCANMASKLOWSCAN    ; no damage power sink
  137. LIGHTOBSTR                EQU    $0500 | SCANMASKLIGHTDAMAGE | SCANMASKLOWSCAN    ; constructed
  138. MEDIUMOBSTR                EQU    $0700 | SCANMASKMEDIUMDAMAGE | SCANMASKSCAN    ; constructed
  139. HEAVYOBSTR                EQU    $0900 | SCANMASKHEAVYDAMAGE | SCANMASKSCAN    ; constructed
  140. POWEROBSTR                EQU    $0B00 | SCANMASKHEAVYDAMAGE | SCANMASKLTPOWERDAMAGE | SCANMASKSCAN    ; constructed no damage power sink
  141. BARRIER                    EQU    $0100 | SCANMASKHEAVYDAMAGE | SCANMASKHVYPOWERDAMAGE | SCANMASKSCAN    ; high damage power sink
  142. HIGHGOAL                EQU    $9100 | SCANMASKSCAN
  143. LOWGOAL                    EQU    $9000 | SCANMASKLOWSCAN
  144. MINE                    EQU    $A000 | SCANMASKHEAVYDAMAGE | SCANMASKLOWSCAN
  145. ENERGYSTATION            EQU    $A100 | SCANMASKSCAN
  146. REPAIRSTATION            EQU    $A200 | SCANMASKSCAN
  147. IBOT1                    EQU    $8000 | SCANMASKHEAVYDAMAGE | SCANMASKMEDPOWERDAMAGE | SCANMASKSCAN
  148. IBOT2                    EQU    $8100 | SCANMASKHEAVYDAMAGE | SCANMASKMEDPOWERDAMAGE | SCANMASKSCAN
  149. IBOT3                    EQU    $8200 | SCANMASKHEAVYDAMAGE | SCANMASKMEDPOWERDAMAGE | SCANMASKSCAN
  150. IBOT4                    EQU    $8300 | SCANMASKHEAVYDAMAGE | SCANMASKMEDPOWERDAMAGE | SCANMASKSCAN
  151. IBOTLAST                EQU IBOT1 | $0F00            ; last possible IBot
  152. UNKNOWN                    EQU    -1
  153.  
  154. ; interrupt level constants
  155. INTMASKERROR            EQU    $0040
  156. INTMASKATTACK            EQU    $0020
  157. INTMASKDAMAGE            EQU    $0010
  158. INTMASKCOMM                EQU    $0008
  159. INTMASKSCAN                EQU    $0004
  160. INTMASKKEY                EQU    $0002
  161. INTMASKTIMER            EQU    $0001
  162.  
  163. ; interrupt level bit constants
  164. INTBITERROR                EQU    6
  165. INTBITATTACK            EQU    5
  166. INTBITDAMAGE            EQU    4
  167. INTBITCOMM                EQU    3
  168. INTBITSCAN                EQU    2
  169. INTBITKEY                EQU    1
  170. INTBITTIMER                EQU    0
  171.  
  172. ; coprocessor constants
  173. CHASSIS                    EQU    $0000
  174. TURRET                    EQU    CHASSIS + 1
  175. OFFENSE                    EQU    TURRET + 1
  176. DEFENSE                    EQU    OFFENSE + 1
  177.  
  178. ; robot plate constants
  179. PLATEFRONT                EQU    0
  180. PLATERIGHT                EQU    1
  181. PLATEBACK                EQU    2
  182. PLATELEFT                EQU    3
  183.  
  184. ; weapon temperature constants
  185. LASERMELTTEMP            EQU    75                        ; temperature at which laser will melt
  186. CANNONMELTTEMP            EQU    125                        ; temperature at which cannon will melt
  187. LASERMAXPOWER            EQU    50                        ; max power laser can fire
  188. CANNONINC                EQU    110                        ; amount of heat generated with a cannon shot
  189. DEFENSEMAX                EQU    800                        ; max power allocated to defense
  190.  
  191. ; status register bit constants
  192. SRBITSIGN                EQU    15                        ; Sign
  193. SRBITZERO                EQU    14                        ; Zero
  194. SRBITCARRY                EQU    13                        ; Carry
  195. SRBITOFLOW                EQU    12                        ; Overflow
  196. SRBITQMODE                EQU    7                        ; async mode on / off
  197. SRBITCLOAK                EQU    6                        ; cloak on / off
  198. SRBITATTACK                EQU    3                        ; Attacked
  199. SRBITDAMAGE                EQU    2                        ; Damaged
  200. SRBITCOMM                EQU    1                        ; Communication received
  201. SRBITSCAN                EQU    0                        ; Scanned
  202.  
  203. ; status register mask constants
  204. SRMASKSIGN                EQU    $8000                    ; Sign
  205. SRMASKZERO                EQU    $4000                    ; Zero
  206. SRMASKCARRY                EQU    $2000                    ; Carry
  207. SRMASKOFLOW                EQU    $1000                    ; Overflow
  208. SRMASKQMODE                EQU    $0080                    ; async mode on / off
  209. SRMASKCLOAK                EQU    $0040                    ; cloak on / off
  210. SRMASKATTACK            EQU    $0008                    ; Attacked
  211. SRMASKDAMAGE            EQU    $0004                    ; Damaged
  212. SRMASKCOMM                EQU    $0002                    ; Communication received
  213. SRMASKSCAN                EQU    $0001                    ; Scanned
  214.  
  215. ; error constants
  216. ERROPCODE                EQU 1                        ; executed an invalid opcode
  217. ERRADDRESS                EQU    2                        ; used an invalid address
  218. ERRPORT                    EQU    3                        ; used an invalid port
  219. ERRINTERRUPT            EQU    4                        ; error interrupt occurred but was improperly set-up
  220. ERRREGISTER                EQU    5                        ; used an invalid register
  221. ERROUTOFPOWER            EQU    6                        ; IBot power is gone
  222. ERRSTACKOVERFLOW        EQU    7                        ; put too much data on stack
  223. ERRSTACKUNDERFLOW        EQU    8                        ; took too much data off stack
  224. ERRDIVZERO                EQU    9                        ; divide by zero
  225. ERRINVALIDCOP            EQU    10                        ; invalid call to a coprocessor
  226. ERRINVALIDSYS            EQU    11                        ; invalid call to system
  227. ERRINVALIDGROUP            EQU    12                        ; invalid call to a coprocessor or system
  228.